package com.bite.common.core.controller;

import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import com.bite.common.core.constants.HttpConstants;
import com.bite.common.core.domain.R;
import com.bite.common.core.domain.TableDataInfo;
import com.bite.common.core.domain.dto.BaseQueryTableDTO;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;

import java.util.List;

public class BaseController {
    /**
     * MySQL 结果 转换为特点返回值
     */
    public R<Void> toR(int rows) {
        return rows > 0 ? R.ok() : R.fail();
    }

    public R<Void> toR(Long rows) {
        return rows > 0 ? R.ok() : R.fail();
    }

    public R<Void> toR(boolean result) {
        return result ? R.ok() : R.fail();
    }

    public <T> R<T> ok(T data) {
        return R.ok(data);
    }

    public TableDataInfo getTableDataInfo(List<?> list) {
        // list == null || list.isEmpty()
        if (CollectionUtil.isEmpty(list)) {
            return TableDataInfo.empty();
        }
        return TableDataInfo.success(list, new PageInfo<>(list).getTotal());
    }

    // 不能在有Redis缓存中使用 因为如果需要刷新 那么查询到的数据可能会少
    public void startPage(BaseQueryTableDTO queryTableBaseDTO){
        PageHelper.startPage(queryTableBaseDTO.getPageNum(), queryTableBaseDTO.getPageSize());
    }

    // 将Token前缀忽视掉 ps：八成这里是需要优化的 因为不止这里会用到
    public String transToken(String token) {
        if (StrUtil.isNotEmpty(token) && token.startsWith(HttpConstants.PREFIX)) {
            token = token.replaceFirst(HttpConstants.PREFIX, StrUtil.EMPTY);
        }
        return token;
    }
}
